/*
    题目描述：链接：https://leetcode.cn/problems/climbing-stairs/
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
*/

/*
    解题思路：动态规划
    爬上 n−1 阶楼梯的方法数量。因为再爬1阶就能到第n阶
    爬上 n−2 阶楼梯的方法数量，因为再爬2阶就能到第n阶
    所以我们得到公式 dp[n] = dp[n-1] + dp[n-2]
    同时需要初始化 dp[0]=1 和 dp[1]=1
*/


function climbStairs(n) {
    let dp = [1,1];

    for (let i = 0; i < n-1; i++) {
        dp[i+2] = dp[i+1] + dp[i];
    };

    return dp[n];
};

// test
const n = 5;
const res = climbStairs(n);

console.log(res);  //8
